<#-- 注意事项：
    1. 相关画面需要引用时，请在文件头添加：<#include "/common/query_condition.ftl" />
    2. 查询画面引用时，其查询条件Form必须命名为queryForm, 跳转新增画面的  href 值必须是 toCreateXXXX, 
 跳转 编辑画面的  href 值必须是 toUpdateXXXX。 （自己写function的可无视此限制，具体实现方法可参照: ready()）
    3. 新增/编辑画面引用时，在Form Submit的时候，请调用：submitWithQueryCondition(submitForm)
-->

<script type="text/javascript">
    /**
     * 指定对象转换成JSON序列化字符串
     * 在反斜杠前加一个反斜杠, 在双引号前加一个反斜杠
     */
    function values2JSONString(formObject) {
        var s = "{";
        var first = true;
    
        $("input,select", formObject).each(function() {
            var value = $(this).val();
            if (value) {
                if (!first) s += ',';
                s += '"' + $(this).attr('name') + '":"' + value.replace(/\\/g, '\\\\').replace(/\"/g, '&quot;') + '"';
                first = false;
            }
        });
    
        return s + "}";
    }

    /**
     * 查询画面迁移至新增/编辑画面
     * 
     * conditionForm: 查询条件Form
     * actionUrl: 迁移目标Linker
     */
    function submitAsTrackForm(conditionForm, actionUrl) {
        var submitForm = $("#trackForm");

        $(submitForm).attr("action", actionUrl);
        $("#trackedQueryCondition", submitForm).val(values2JSONString(conditionForm));

        submitForm.submit();
        return false;
    }

    /**
     * 新增/编辑画面Submit后迁移至查询画面（附带查询画面的查询条件）
     *
     * submitForm: 计划Submit的Form
     */
    function submitWithQueryCondition(submitForm) {

        var trackedQueryCondition = '${RequestParameters ["trackedQueryCondition"]}';
        $(submitForm).append('<input type="hidden" id="trackedQueryCondition" name="trackedQueryCondition" value="{}" />');
        $("#trackedQueryCondition", submitForm).val(trackedQueryCondition);

        $(submitForm).submit();
        return false;
    }

    /**
     * 为指定Form附加查询画面的查询条件
     *
     * submitForm: 计划Submit的Form
     */
    function bindQueryCondition(submitForm) {
        var trackedQueryCondition = '${RequestParameters ["trackedQueryCondition"]}';
        $(submitForm).append('<input type="hidden" id="trackedQueryCondition" name="trackedQueryCondition" value="{}" />');
        $("#trackedQueryCondition", submitForm).val(trackedQueryCondition);
    }

    /**
     * 为查询画面绑定Submit方法
     */
    $(document).ready(function(){
        // 【新增】Linker点击，迁移到【新增】画面
        $("[href^=toCreate]").click(function(){
             return submitAsTrackForm($("#queryForm"), $(this).attr("href"));
        });

        // 【编辑】Linker点击，迁移到【编辑】画面
        $("[href^=toUpdate]").click(function(){
            return submitAsTrackForm($("#queryForm"), $(this).attr("href"));
        });
    });
</script>

<form id="trackForm" name="trackForm" method="post" action="">
    <input type="hidden" id="trackedQueryCondition" name="trackedQueryCondition" value="{}" />
</form>
